home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 2.iso / STUTTGART / UTIL / MOUSE / WIMPEYES / !WimpEyes / !RunImage (.txt) < prev    next >
RISC OS BBC BASIC V Source  |  1995-10-18  |  5KB  |  198 lines

  1.  Wimp eyes
  2.  "Wimp_CloseDown",taskhandle,&4b534154: 
  3.  c 260: b=c+4
  4.  "Wimp_Initialise",200,&4b534154,"Wimp Eyes" 
  5.  ,taskhandle
  6. -c!0=windowhandle: 
  7.  "Wimp_OpenWindow",,c
  8. quit%=
  9.  "Wimp_Poll",%10000001100100110000,b 
  10.  reason%
  11.  reason% 
  12. redraw
  13. .    
  14.  "Wimp_CloseWindow",,b: quit%=
  15. mouseclick
  16.  17,18: 
  17. usermessage
  18.  quit%
  19.  "Wimp_CloseDown",taskhandle,&4b534154
  20.  mxnew%,mynew%,button: mxnew%-=x%: mynew%-=y%
  21. (mx%-mxnew%)>4 
  22. (my%-mynew%)>4 
  23.   mx%=mxnew%: my%=mynew%
  24.  poiter has moved: get new pupil position
  25. ;  length=
  26. ((mx%-lex%)*(mx%-lex%)+(my%-ley%)*(my%-ley%))
  27.  1  lpxnew%=lex%+(erx%-pr%-4)*(mx%-lex%)/length
  28. !1  lpynew%=ley%+(ery%-pr%-4)*(my%-ley%)/length
  29. #;  length=
  30. ((mx%-rex%)*(mx%-rex%)+(my%-rey%)*(my%-rey%))
  31. $1  rpxnew%=rex%+(erx%-pr%-4)*(mx%-rex%)/length
  32. %1  rpynew%=rey%+(ery%-pr%-4)*(my%-rey%)/length
  33.  get left redraw rectangle
  34.  lpxnew%<lpx% 
  35. )+    lminx%=lpxnew%-pr%: lmaxx%=lpx%+pr%
  36. +.    lminx%=lpx%-pr%:    lmaxx%=lpxnew%+pr%
  37.  lpynew%<lpy% 
  38. .+    lminy%=lpynew%-pr%: lmaxy%=lpy%+pr%
  39. 0.    lminy%=lpy%-pr%:    lmaxy%=lpynew%+pr%
  40.  get right redraw rectangle
  41.  rpxnew%<rpx% 
  42. 5+    rminx%=rpxnew%-pr%: rmaxx%=rpx%+pr%
  43. 7.    rminx%=rpx%-pr%:    rmaxx%=rpxnew%+pr%
  44.  rpynew%<rpy% 
  45. :+    rminy%=rpynew%-pr%: rmaxy%=rpy%+pr%
  46. <.    rminy%=rpy%-pr%:    rmaxy%=rpynew%+pr%
  47.  redraw left rectangle
  48.   b!0=windowhandle
  49. A%  b!04=lminx%-2: b!08=lminy%-h%-2
  50. B%  b!12=lmaxx%+2: b!16=lmaxy%-h%+4
  51.  "Wimp_UpdateWindow",,b 
  52.  notready%
  53.  notready%
  54.  "Wimp_SetColour",0
  55. G!    
  56.  lpx%+x%,lpy%+y%,pr%
  57.  "Wimp_SetColour",7
  58. I'    
  59.  lpxnew%+x%,lpynew%+y%,pr%
  60. J-    
  61.  "Wimp_GetRectangle",,b 
  62.  notready%
  63.  redraw right rectangle
  64.   b!0=windowhandle
  65. O%  b!04=rminx%-2: b!08=rminy%-h%-2
  66. P%  b!12=rmaxx%+2: b!16=rmaxy%-h%+4
  67.  "Wimp_UpdateWindow",,b 
  68.  notready%
  69.  notready%
  70.  "Wimp_SetColour",0
  71. U"    
  72.  rpx%+x%,rpy%+y%,pr%:
  73.  "Wimp_SetColour",7
  74. W'    
  75.  rpxnew%+x%,rpynew%+y%,pr%
  76. X-    
  77.  "Wimp_GetRectangle",,b 
  78.  notready%
  79. [   lpx%=lpxnew%: lpy%=lpynew%
  80. \   rpx%=rpxnew%: rpy%=rpynew%
  81. redraw
  82.  "Wimp_RedrawWindow",,b 
  83.  notready%
  84. x%=b!4: y%=b!8
  85.  notready%
  86.  b!28<(b!4+b!12)/2 
  87.  "Wimp_SetColour",0
  88. g'    
  89.  lex%+x%,ley%+y%,erx%,ery%
  90.  "Wimp_SetColour",7
  91. i!    
  92.  lpx%+x%,lpy%+y%,pr%
  93.  b!36>(b!4+b!12)/2 
  94.  "Wimp_SetColour",0
  95. m.    
  96.  rex%+x%,rey%+y%,erx%,ery%       
  97.  "Wimp_SetColour",7
  98. o!    
  99.  rpx%+x%,rpy%+y%,pr%
  100.  "Wimp_GetRectangle",,b 
  101.  notready%
  102.  "Wimp_OpenWindow",,b
  103. x%=b!4: y%=b!8
  104.             
  105. mouseclick
  106.  user drags
  107.  b!8=64 
  108.  b!8=16 
  109.   b!0=windowhandle: b!4=1
  110.  "Wimp_DragBox",,b
  111.  user quits (with MENU)
  112.  b!8=2 
  113.  quit%=
  114. usermessage
  115.  b!16=0 
  116.  quit%=
  117.  flicker% 
  118.  "OS_ReadModeVariable",-1,4 
  119.  ,,xfak%
  120.  "OS_ReadModeVariable",-1,5 
  121.  ,,yfak%
  122. 5w%=81<<xfak%: h%=w%/1.8: 
  123.  window width and hight
  124. colour%=13: 
  125.  dark green
  126. flicker%=
  127.  read commandline
  128.  "OS_GetEnv" 
  129.  CmndLine
  130. <c$="":
  131. : c$=c$+
  132. (?CmndLine): CmndLine+=1: 
  133.  ?CmndLine<32
  134.  get width and hight
  135. c$,"-width"): 
  136.  ww>0 
  137. c$,ww+6)): h%=w%/1.8
  138. c$,"-hight"): 
  139.  hh>0 
  140. c$,hh+6))
  141.  get colour from comandline
  142. c$,"-colour"): 
  143.  cc>0 
  144.  colour%=
  145. c$,cc+7))
  146.  get flicker flag
  147. c$,"-flicker")>0 
  148.  flicker%=
  149.  get title bar flag
  150. c$,"-title")>0 
  151.  tflag%=7<<25 
  152.  tflag%=0
  153.  get -xpos and -ypos OR
  154.  set them to the middle of the screen
  155.  (x%,y%) is left bottom corner of WimpEye window
  156. c$,"-xpos")
  157.  xx>0 
  158.   x%=
  159. c$,xx+5))
  160.  "OS_ReadModeVariable",-1,11 
  161.  ,,x%: x%=((x%<<xfak%)-w%)/2
  162. c$,"-ypos")
  163.  yy>0 
  164.   y%=
  165. c$,yy+5))
  166.  "OS_ReadModeVariable",-1,12 
  167.  ,,y%: y%=((y%<<yfak%)-h%)/2
  168. 7lex%=w%/4: ley%=h%/2: 
  169.  position of left eye centre
  170. :rex%=3*w%/4: rey%=h%/2: 
  171.  position of right eye centre
  172. Zlpx%=w%/4: lpy%=h%/2: rpx%=0.75*w%: rpy%=h%/2: 
  173.  position of the center of both pupils
  174. )mx%=0: my%=0: 
  175.  actual mouse position
  176. $pr%=w%/9: 
  177.  radius of the pupils
  178. /erx%=w%/5: ery%=h%/2.2: 
  179.  radii of the eyes
  180.  window data
  181. b!00=x%:   b!04=y%
  182. )b!08=x%+w%: b!12=y%+h%:
  183.   2         1
  184. 3b!16=0:    b!20=0: 
  185.  54321098765432109876543210
  186. >b!24=-1:   b!28=%10000000000000000000000001000010 
  187.  tflag%
  188. 1b?32=7:    b?33=2:    b?34=7:    b?35=colour%
  189. +b?36=3:    b?37=1:    b?38=12:   b?39=0
  190. b!40=0 :   b!44=-h%
  191. b!48=w%:   b!52=0
  192. b!56=25:   b!64=1
  193. %b!60=%1010000000000000:    b!68=0
  194. $(b+72)="Eyes"
  195. b!84=0: b!88=0
  196.  "Wimp_CreateWindow",,b 
  197.  windowhandle
  198.